package demo.factory;

import java.lang.reflect.InvocationTargetException;

public class PhoneFactory {

//    工厂方法模式
//    public Phone getPhone(String name) {
//        if ("小米".equals(name)){
//            return new XiaomiPhone();
//        }
//        else if ("华为".equals(name)){
//            return new HuaweiPhone();
//        }
//        else if ("苹果".equals(name)){
//            return new IPhone();
//        }else {
//            return null;
//        }
//    }

//    public static Phone getPhone(String name){
//        if ("小米".equals(name)){
//            return new XiaomiPhone();
//        }
//        else if ("华为".equals(name)){
//            return new HuaweiPhone();
//        }
//        else if ("苹果".equals(name)){
//            return new IPhone();
//        }else {
//            return null;
//        }
//    }

    public static Phone getPhone(String name){

        try {
            Class<?> aClass = Class.forName(name);
            return (Phone) aClass.getConstructor().newInstance();
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }

}
